1. Field of the Invention
This invention relates to data storage in general and, more particularly, to performance-adjusted data allocation in a multi-device file system.
2. Description of the Related Art
Modern distributed storage environments may include multiple storage objects connected via one or more interconnection networks. The interconnection networks provide the infrastructure to connect the various elements of a distributed storage environment. Traditionally, file systems store data to a single device. Storing data to different devices may help to ensure better load balancing, faster response time, and greater aggregated bandwidth, among other things. As the number of storage devices grows, the complexity of the entire storage environment grows dramatically. A file system may allocate data to a storage sub-system without determining or specifying how that data should be allocated across multiple storage devices. In other words, the storage sub-system itself will generally determine the specific storage device on which data should be stored. When determining how to allocate data storage, rather than simply writing data to one device until it becomes full and then moving on to another device, a storage sub-system may alternately store data to first one device then another. For instance, a storage sub-system may employ a simple, round robin data allocation policy, storing data to each device in turn. Alternatively, a storage sub-system may randomly choose the particular device on which to store data or stripe data according to a RAID algorithm. Generally, however, such device-level data allocation occurs without the file system's knowledge or involvement. In addition to storage devices, distributed storage environments frequently include other network elements, such as switches, hubs, and routers. Networking issues, such as path redundancy, load balancing across multiple network paths, and the number of network hops, may influence characteristics of the storage environment, such as access time, throughput, etc.